package config

// Setting 表示全局配置文件结构
type Setting struct {
	// 应用相关配置
	App struct {
		Name    string `ini:"name"`
		Version string `ini:"version"`
		Author  string `ini:"author"`
	} `ini:"app"`

	// 内部使用的保留配置
	// 这些配置不应被直接修改
	Internal struct {
		InstallTime string `ini:"install_time"`
		LastUsed    string `ini:"last_used"`
		RunCount    int    `ini:"run_count"`
	} `ini:"internal"`
}

// restrictedKeys 定义了受限制不允许直接修改的key
var restrictedKeys = map[string]bool{
	"internal.install_time": true,
	"internal.last_used":    true,
	"internal.run_count":    true,
	"app.name":              true,
	"app.version":           true,
	"app.author":            true,
}

// IsKeyRestricted 检查指定的key是否受限制
func IsKeyRestricted(section, key string) bool {
	fullKey := section + "." + key
	return restrictedKeys[fullKey]
}

// allowedSections 定义了允许读写的配置节
var allowedSections = map[string]bool{
	"app":      true,
	"internal": true,
}

// IsAllowedSection 检查指定的section是否允许操作
func IsAllowedSection(section string) bool {
	return allowedSections[section]
}
